def solution(N, data_array):
    # 定义计算给定数组最大子数组和的函数
    def max_subarray_sum(arr):
        # 初始化当前子数组和为数组第一个元素
        current_sum = arr[0]
        # 初始化最大子数组和为数组第一个元素
        max_sum = arr[0]
        # 从数组第二个元素开始遍历
        for num in arr[1:]:
            # 计算当前位置的最大子数组和，要么是当前元素本身，要么是当前元素加上前面的当前子数组和
            current_sum = max(num, current_sum + num)
            # 更新最大子数组和为当前最大子数组和与新的当前子数组和中的较大值
            max_sum = max(max_sum, current_sum)
        return max_sum

    ans = float('-inf')
    # 遍历所有可能的子数组起始位置
    for i in range(N):
        # 遍历所有可能的子数组结束位置（从起始位置 i 开始）
        for j in range(i, N):
            # 创建新数组，将原数组中从 i 到 j 的子数组翻转后再拼接
            new_arr = data_array[:i] + list(reversed(data_array[i:j + 1])) + data_array[j + 1:]
            # 计算新数组的最大子数组和
            subarray_sum = max_subarray_sum(new_arr)
            # 更新答案为当前答案与新计算的最大子数组和中的较大值
            ans = max(ans, subarray_sum)
    return ans


if __name__ == "__main__":
    #  You can add more test cases here
    array1 = [-85, -11, 92, 6, 49, -76, 28, -16, 3, -29, 26, 37, 86, 3, 25, -43, -36, -27, 45, 87, 91, 58, -15, 91, 5,
              99, 40, 68, 54, -95, 66, 49, 74, 9, 24, -84, 12, -23, -92, -47, 5, 91, -79, 94, 61, -54, -71, -36, 31, 97,
              64, -14, -16, 48, -79, -70, 54, -94, 48, 37, 47, -58, 6, 62, 19, 8, 32, 65, -81, -27, 14, -18, -34, -64,
              -97, -21, -76, 51, 0, -79, -22, -78, -95, -90, 4, 82, -79, -85, -64, -79, 63, 49, 21, 97, 47, 16, 61, -46,
              54, 44]
    print(solution(5, [1, 2, 3, -1, 4]) == 10)
    print(solution(100, array1) == 1348)
